Introdução
Este documento descreve como utilizar a solução. Ele contém instruções para instalar as dependências necessárias e executar o projeto e serve como guia para configurar tanto o robô quanto o computador que irá controlá-lo.
Versionamento de Dependências
O projeto foi desenvolvido e testado usando as seguintes versões de dependências:
- ROS2:
humble
- Python:
3.10.12
- Typer:
0.9.0
- InquirerPy:
0.3.4
- FastAPI:
0.68.0
- VUE:
3.2.0
Preparo do Ambiente de Execução
Para garantir a execução correta do software, é essencial preparar adequadamente o ambiente de execução. Isso evitará problemas e erros durante a operação do robô.
Configuração do Sistema Operacional
Tudo envolvido com o ROS2 foi desenvolvido e testado no sistema operacional Ubuntu 20.04 LTS. Recomenda-se o uso deste sistema operacional para garantir a compatibilidade e execução correta das partes que possuem ROS2.
Caso deseje utilizar outro sistema operacional, consulte a documentação oficial do ROS2 para verificar a compatibilidade e instruções de instalação. A versão correta do Ubuntu encontra-se aqui
Execução do Projeto
Temos 3 partes principais para a execução do projeto, sendo elas: o robô, o backend e o fronted.
Robô
Para iniciar o robô, siga os seguintes passos:
- Ligue o robô atráves do switch.
- Aguarde até que o robô esteja pronto para ser controlado. Isso pode levar alguns minutos.
- (Opcional) Conecte-se ao robô via SSH, caso deseje ver log de algo. Para isso, utilize o seguinte comando:
ssh <USUARIO_DO_ROBO>@<IP_DO_ROBÔ>
Substitua <IP_DO_ROBÔ>
pelo endereço IP do robô. Caso não saiba o endereço IP do robô, conecte-o a um monitor e verifique o endereço IP na tela usando o comando ip addr
.
Substitua <USUARIO_DO_ROBO>
pelo nome de usuário do robô. Para obter o nome de usuário, conecte o robô a um monitor e obtenha o nome de usuário usando o comando whoami
.
Quando o robô for ligado, ele automaticamente inicia o ROS2 e um webscoket server para comunicação com o backend, para receber comandos e enviar informações de sensores e outro websocket para enviar os dados da câmera para o frontend. Os códigos que são executados no robô estão localizados em /src/package/camera
e /src/package/workspace/src/websocket_robot
.
Backend
Para iniciar o backend, siga os seguintes passos:
- Instale o Docker Engine:
# Add Docker's official GPG key:
sudo apt-get update
sudo apt-get install ca-certificates curl
sudo install -m 0755 -d /etc/apt/keyrings
sudo curl -fsSL https://download.docker.com/linux/ubuntu/gpg -o /etc/apt/keyrings/docker.asc
sudo chmod a+r /etc/apt/keyrings/docker.asc
# Add the repository to Apt sources:
echo \
"deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.asc] https://download.docker.com/linux/ubuntu \
$(. /etc/os-release && echo "$VERSION_CODENAME") stable" | \
sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
sudo apt-get update
sudo apt-get install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin
sudo usermod -aG docker $USER
- Clone o repositório do backend e vá para o diretório src do projeto e rode o banco de dados:
docker compose up postgres
- Abra outro terminal e va para a pasta do backend (repo/src/backend)
- Crie uma virtualenv e instale as dependências requirements.txt:
python3 -m env env
source venv/bin/activate
pip install -r requirements.txt
- Crie um arquivo .env e adicione as variáveis de ambiente:
#! POSTGRES
# Formato: postgresql://<username>:<password>@<host>:<port>/<database>
DATABASE_URL="postgresql://cannabot:Cnh39pKWBV4mNpzcxMcBdLxud5nJxKzWsq6iXstdeLf2vZbCHKtAn36w8wqBmFHL@localhost:5432/cannabot"
#! BUCKET
BUCKET_HOST="temp"
BUCKET_PORT="9000"
BUCKET_ACCESS_KEY="temp"
BUCKET_SECRET_KEY="temp"
BUCKET_USE_SSL="false"
#! SECRETS
#* Usado para criptografar e descriptografar tokens JWT
# Obtido usando: openssl rand -hex 32
JWT_SECRET = "f6013799590e9d59c6853253a2a7af2dc88a3b36f891ede916a82e02a87a8555"
#* Usado para criptografar e descriptografar informações sensíveis no banco de dados usando AES256
# Obtido usando: openssl rand -base64 32
AES_SECRET = "wAhXwSFyvh7i8hE0/DdqeJS490WFyAOImaE/yZACHzI="
- Rode o backend:
python3 src/main.py
Frontend
Para iniciar o frontend, siga os seguintes passos:
- Vá para a pasta do frontend (repo/src/frontend)
- Instale as dependências:
npm install
- Rode o frontend:
npm run serve
- Acesse o frontend em
http://localhost:8080
Utilização
Após seguir os passos acima, você pode acessar o frontend e controlar o robô. Acesse o frontend em http://localhost:8080/control
para teleoperar o robô e ver as imagens da câmera.